package com.zfh.test;

import com.zfh.adapter.Print;
import com.zfh.adapter.PrintBanner;

/**
 * <h1> 主测试类 </h1>
 * <pre>
 *	0. 测试时，不需要了解PringBanner如何实现，只使用通用的打印方法打印即可。
 *	1. 实现了PrintBanner和Main测试的解耦
 *	2. 实现了Print的通用适配
 * </pre>
 * @author fhzheng
 *
 */
public class Main {

	public static void main(String[] args) {
		// 接口实现测试，继承方式
		testIPrint();
		// 抽象类实现测试，代理方式
		testAPrint();
	}
	
	/**
	 * 测试接口
	 */
	public static void testIPrint() {
		// 上转型为通用打印对象，专门实现对广告词的各种包装后的打印控制
		com.zfh.adapter.Print p = new com.zfh.adapter.PrintBanner("Be Strong or Go Home");
		// 只使用接口中的方法
		p.printWeak();
		p.printStrong();
	}

	/**
	 * 测试抽象类
	 */
	public static void testAPrint() {
		// 上转型为通用打印对象，专门实现对广告词的各种包装后的打印控制
		com.zfh.adapterAgent.Print p = new com.zfh.adapterAgent.PrintBanner("Be Strong or Go Home");
		// 只使用抽象类中的方法
		p.printWeak();
		p.printStrong();
	}
}
